package com.campuscrowdsourcing.server.service;

import com.campuscrowdsourcing.server.domain.dto.user.LoginDTO;
import com.campuscrowdsourcing.server.domain.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campuscrowdsourcing.server.domain.vo.TeamUserVO;
import com.campuscrowdsourcing.server.domain.vo.TokenVO;
import com.campuscrowdsourcing.server.domain.vo.UserVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Xinyuan Zhao
 * @since 2023-03-09
 */
public interface UserService extends IService<User> {

    /**
     * 用户名、邮箱、手机号/密码登录
     *
     * @param loginDto  登录参数
     * @return 用户信息
     */
    UserVO login(LoginDTO loginDto);

    /**
     * 用户注册
     * @param loginDto 注册参数
     * @return 用户信息
     */
    UserVO register(LoginDTO loginDto);


    /**
     * 更新用户密码
     * @param loginDto 参数
     */
    void updatePassword(LoginDTO loginDto);

    /**
     * 获取验证码
     * @param account 邮箱/手机
     */
    void getCode(String account);

    /**
     * 更换头像
     * @param file 头像
     */
    void updateAvatar(MultipartFile file);


    TokenVO refreshToken();

    List<TeamUserVO> getAllByTeamId(Integer id);

    Object getByTeamId(Integer id);
}
